﻿using System;

namespace Eassets.Layered.Domain.Asset
{
    [Serializable]
    public class AssetItemDetails
    {
        #region Fields

        /// <summary>
        /// The Item Details Id of the AssetItemDetails.
        /// </summary>
        private long itemDetailsId;
        /// <summary>
        /// The Organization Level List Id of the AssetItemDetails.
        /// </summary>
        private long organizationLevelListId;
        /// <summary>
        /// The Asset Id of the AssetItemDetails.
        /// </summary>
        private long assetId;
        /// <summary>
        /// The Asset Serial Code of the AssetItemDetails.
        /// </summary>
        private string assetSerialCode = string.Empty;
        /// <summary>
        /// The Asset Status of the AssetItemDetails.
        /// </summary>
        private string assetStatus = string.Empty;
        /// <summary>
        /// The Purchased Date of the AssetItemDetails.
        /// </summary>
        private DateTime? purchasedDate;
        /// <summary>
        /// The Purchased Value of the AssetItemDetails.
        /// </summary>
        private decimal? purchasedValue;
        /// <summary>
        /// The Cumulative Dep Value of the AssetItemDetails.
        /// </summary>
        private decimal? cumulativeDepValue;
        /// <summary>
        /// The Current Book Value of the AssetItemDetails.
        /// </summary>
        private decimal? currentBookValue;
        /// <summary>
        /// The Remaining Life Time of the AssetItemDetails.
        /// </summary>
        /// 
        /// <summary>
        /// The Depreciated Value of the AssetItemDetails.
        /// </summary>
        private decimal? depreciatedValue;


        private long? remainingLifeTime;
        /// <summary>
        /// The Remaining Lifetime UOM of the AssetItemDetails.
        /// </summary>
        private string remainingLifetimeUOM = string.Empty;
        /// <summary>
        /// The Employee ID of the AssetItemDetails.
        /// </summary>
        private long? employeeID;
        /// <summary>
        /// The Warranty of the AssetItemDetails.
        /// </summary>
        private string warranty = string.Empty;
        /// <summary>
        /// The Barcode of the AssetItemDetails.
        /// </summary>
        private string barcode = string.Empty;
        /// <summary>
        /// The Status ID of the AssetItemDetails.
        /// </summary>
        private string statusID = string.Empty;
        /// <summary>
        /// The Date Creation of the AssetItemDetails.
        /// </summary>
        private DateTime sysDatecreation;
        /// <summary>
        /// The Date Last Modification of the AssetItemDetails.
        /// </summary>
        private DateTime sysDatelastmodification;

        private Employee employee;

        private string itemSerial;
        private Category assetCategory;
        private Assets fixedAssets;
        #endregion

        #region Properties


        /// <summary>
        /// Gets or sets the Item Details Id of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Item Details Id of the AssetItemDetails.
        /// </value>
        public long ItemDetailsId
        {
            get
            {
                return this.itemDetailsId;
            }
            set
            {
                this.itemDetailsId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Organization Level List Id of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Organization Level List Id of the AssetItemDetails.
        /// </value>
        public long OrganizationLevelListId
        {
            get
            {
                return this.organizationLevelListId;
            }
            set
            {
                this.organizationLevelListId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Asset Id of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Asset Id of the AssetItemDetails.
        /// </value>
        public long AssetId
        {
            get
            {
                return this.assetId;
            }
            set
            {
                this.assetId = value;
            }
        }

        /// <summary>
        /// Gets or sets the Asset Serial Code of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Asset Serial Code of the AssetItemDetails.
        /// </value>
        public string AssetSerialCode
        {
            get
            {
                return this.assetSerialCode;
            }
            set
            {
                this.assetSerialCode = value;
            }
        }

        /// <summary>
        /// Gets or sets the Asset Status of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Asset Status of the AssetItemDetails.
        /// </value>
        public string AssetStatus
        {
            get
            {
                return this.assetStatus;
            }
            set
            {
                this.assetStatus = value;
            }
        }

        /// <summary>
        /// Gets or sets the Purchased Date of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Purchased Date of the AssetItemDetails.
        /// </value>
        public DateTime? PurchasedDate
        {
            get
            {
                return this.purchasedDate;
            }
            set
            {
                this.purchasedDate = value;
            }
        }

        /// <summary>
        /// Gets or sets the Purchased Value of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Purchased Value of the AssetItemDetails.
        /// </value>
        public decimal? PurchasedValue
        {
            get
            {
                return this.purchasedValue;
            }
            set
            {
                this.purchasedValue = value;
            }
        }

        /// <summary>
        /// Gets or sets the Depriciated Value of the AssetItemDetails.
        /// </summary>
        public decimal? DepreciatedValue
        {
            get
            {
                return this.depreciatedValue;
            }
            set
            {
                this.depreciatedValue = value;
            }
        }

        /// <summary>
        /// Gets or sets the Cumulative Dep Value of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Cumulative Dep Value of the AssetItemDetails.
        /// </value>
        public decimal? CumulativeDepValue
        {
            get
            {
                return this.cumulativeDepValue;
            }
            set
            {
                this.cumulativeDepValue = value;
            }
        }

        /// <summary>
        /// Gets or sets the Current Book Value of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Current Book Value of the AssetItemDetails.
        /// </value>
        public decimal? CurrentBookValue
        {
            get
            {
                return this.currentBookValue;
            }
            set
            {
                this.currentBookValue = value;
            }
        }

        /// <summary>
        /// Gets or sets the Remaining Life Time of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Remaining Life Time of the AssetItemDetails.
        /// </value>
        public long? RemainingLifeTime
        {
            get
            {
                return this.remainingLifeTime;
            }
            set
            {
                this.remainingLifeTime = value;
            }
        }

        /// <summary>
        /// Gets or sets the Remaining Lifetime UOM of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Remaining Lifetime UOM of the AssetItemDetails.
        /// </value>
        public string RemainingLifetimeUOM
        {
            get
            {
                return this.remainingLifetimeUOM;
            }
            set
            {
                this.remainingLifetimeUOM = value;
            }
        }

        /// <summary>
        /// Gets or sets the Employee ID of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Employee ID of the AssetItemDetails.
        /// </value>
        public long? EmployeeID
        {
            get
            {
                return this.employeeID;
            }
            set
            {
                this.employeeID = value;
            }
        }

        /// <summary>
        /// Gets or sets the Warranty of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Warranty of the AssetItemDetails.
        /// </value>
        public string Warranty
        {
            get
            {
                return this.warranty;
            }
            set
            {
                this.warranty = value;
            }
        }

        /// <summary>
        /// Gets or sets the Barcode of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Barcode of the AssetItemDetails.
        /// </value>
        public string Barcode
        {
            get
            {
                return this.barcode;
            }
            set
            {
                this.barcode = value;
            }
        }

        /// <summary>
        /// Gets or sets the Status ID of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Status ID of the AssetItemDetails.
        /// </value>
        public string StatusID
        {
            get
            {
                return this.statusID;
            }
            set
            {
                this.statusID = value;
            }
        }

        /// <summary>
        /// Gets or sets the Date Creation of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Date Creation of the AssetItemDetails.
        /// </value>
        public DateTime sys_DateCreation
        {
            get
            {
                return this.sysDatecreation;
            }
            set
            {
                this.sysDatecreation = value;
            }
        }

        /// <summary>
        /// Gets or sets the Date Last Modification of the AssetItemDetails.
        /// </summary>
        /// <value>
        /// The Date Last Modification of the AssetItemDetails.
        /// </value>
        public DateTime sys_DateLastModification
        {
            get
            {
                return this.sysDatelastmodification;
            }
            set
            {
                this.sysDatelastmodification = value;
            }
        }

        public Category Category
        {
            get
            {
                return this.assetCategory;
            }
            set
            {
                this.assetCategory = value;
            }
        }

        public Assets Assets
        {
            get
            {
                return this.fixedAssets;
            }
            set
            {
                this.fixedAssets = value;
            }
        }

        public String ItemSerial
        {
            get
            {
                return this.itemSerial;
            }
            set
            {
                this.itemSerial = value;
            }
        }

        public Employee Employee
        {
            get
            {
                return this.employee;
            }
            set
            {
                this.employee = value;
            }
        }
        #endregion
    }
}
